package com.lhq.lingsi_study_hall.utils;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

/**
 * json数组合并工具
 */
public class JsonUtils {
    /**
     * 合并多个JSON字符串列表为一个JSON数组字符串。
     *
     * @param <T>           泛型类型参数，表示目标类的类型
     * @param jsonStrings   包含JSON字符串的列表
     * @param targetClass   目标类的Class对象
     * @return              合并后的JSON数组字符串
     */
    public static <T> String mergeJsonLists(List<String> jsonStrings, Class<T> targetClass) {
        Gson gson = new Gson();
        List<T> allItems = new ArrayList<>();
        Type listType = TypeToken.getParameterized(List.class, targetClass).getType();

        for (String jsonString : jsonStrings) {
            try {
                // 解析每个JSON字符串到目标类的对象列表中
                List<T> items = gson.fromJson(jsonString, listType);
                if (items != null) {
                    allItems.addAll(items);
                }
            } catch (Exception e) {
                // 处理解析过程中可能出现的异常
                System.err.println("Error parsing JSON string: " + jsonString);
                e.printStackTrace();
            }
        }

        // 将所有项目转换回JSON数组字符串
        return gson.toJson(allItems);
    }

    public static String captureJsonStr(String jsonStr){
        int start = jsonStr.indexOf("[");
        int end = jsonStr.lastIndexOf("]");
        return jsonStr.substring(start, end + 1);
    }
}
